home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / util / gnu / emacs_src_18_58.lha / emacs-18.58 / lisp / term / s4.el < prev    next >
Lisp/Scheme  |  1992-02-21  |  5KB  |  143 lines

  1. ;; Map s4 function key escape sequences
  2. ;; into the standard slots in function-keymap where we can;
  3. ;; set up terminal-specific bindings where we must
  4. ;;
  5. ;; by: Eric S. Raymond, eric@snark.thyrsus.com
  6.  
  7. (require 'keypad)
  8.  
  9. ;; First, map as many keys as possible to terminal-independent keycaps
  10.  
  11. (defvar META-RB-map nil
  12.   "The META-RB-map maps the ESC-[ function keys on the s4 keyboard.")
  13.  
  14. (if (not META-RB-map)
  15.     (progn
  16.      (setq META-RB-map (lookup-key global-map "\e["))
  17.      (if (not (keymapp META-RB-map))
  18.      (setq META-RB-map (make-sparse-keymap)))  ;; <ESC>[ commands
  19.  
  20.      (setup-terminal-keymap META-RB-map
  21.         '(("A" . ?u)       ; up arrow
  22.           ("B" . ?d)       ; down-arrow
  23.           ("C" . ?r)       ; right-arrow
  24.           ("D" . ?l)       ; left-arrow
  25.           ("U" . ?N)       ; 'Page' -> next page
  26.           ("V" . ?P)       ; 'Shift-Page' -> prev page
  27.           ("H" . ?h)       ; 'Home' -> home-key
  28.     ;;    ("J" . ??)       ; 'Clear' -> unmapped
  29.     ))))
  30.  
  31. (defun enable-arrow-keys ()
  32.   "Enable the use of the s4 arrow keys for cursor motion.
  33. Because of the nature of the s4, this unavoidably breaks
  34. the standard Emacs command ESC [; therefore, it is not done by default,
  35. but only if you give this command in your .emacs."
  36.   (global-set-key "\e[" META-RB-map))
  37.  
  38. (defvar META-N-map nil
  39.   "META-N-map maps the ESC-N function keys on the s4 keyboard.")
  40.  
  41. (if (not META-N-map)
  42.     (progn
  43.  
  44.      (setq META-N-map (lookup-key global-map "\eN"))
  45.      (if (not (keymapp META-N-map))
  46.      (setq META-N-map (make-sparse-keymap)))  ;; <ESC>N commands
  47.      (setup-terminal-keymap META-N-map '(
  48.         ("a" . ?C)    ; 'Rfrsh' -> redraw screen
  49.     ;;    ("A" . ??)    ; 'Clear' -> unmapped
  50.     ;;    ("c" . ??)    ; 'Move' -> unmapped
  51.     ;;    ("d" . ??)    ; 'Copy' -> unmapped
  52.     ;;    ("B" . ??)    ; 'Shift-Beg' -> unmapped
  53.     ;;    ("M" . ??)    ; 'Shift-Home' -> unmapped
  54.     ;;    ("N" . ??)    ; 'Shift-End' -> unmapped
  55.         ("e" . ?k)    ; 'Dlete' -> generic delete (kill-region)
  56.         ("f" . ?.)    ; 'Dlete Char' -> keypad .
  57.         ("g" . ?1)    ; 'Prev' -> keypad 1 (backward-word)
  58.         ("h" . ?3)    ; 'Next' -> keypad 3 (forward-word)
  59.         ("i" . ?s)    ; 'Mark' -> select
  60.     ;;    ("I" . ??)    ; 'Select' -> MAPPED BELOW
  61.     ;;    ("j" . ??)    ; 'Input Mode' -> unmapped
  62.     ))
  63.  
  64.      (define-key global-map "\eN" META-N-map)))
  65.  
  66. (defvar META-O-map nil
  67.   "META-O-map maps the META-O function keys on the s4 keyboard.")
  68.  
  69. (if (not META-O-map)
  70.     (progn
  71.  
  72.      (setq META-O-map (lookup-key global-map "\eO"))
  73.      (if (not (keymapp META-O-map))
  74.      (setq META-O-map (make-sparse-keymap)))  ;; <ESC>O commands
  75.      (setup-terminal-keymap META-O-map '(
  76.         ("a" . ?E)    ; 'Clear-Line' -> Clear to EOL
  77.         ("A" . ?S)    ; 'Shift-Clear-Line' -> Clear to EOS
  78.         ("b" . ?\C-@)    ; 'Ref' -> function key 0
  79.         ("c" . ?\C-a)    ; 'F1' -> function key 1
  80.         ("d" . ?\C-b)    ; 'F2' -> function key 2
  81.         ("e" . ?\C-c)    ; 'F3' -> function key 3
  82.         ("f" . ?\C-d)    ; 'F4' -> function key 4
  83.         ("g" . ?\C-e)    ; 'F5' -> function key 5
  84.         ("h" . ?\C-f)    ; 'F6' -> function key 6
  85.         ("i" . ?\C-g)    ; 'F7' -> function key 7
  86.         ("j" . ?\C-h)    ; 'F8' -> function key 8
  87.     ;;    ("k" . ??)    ; 'Exit' -> MAPPED BELOW
  88.         ("m" . ??)    ; 'Help' -> help-command
  89.     ;;    ("n" . ??)    ; 'Creat' -> unmapped
  90.     ;;    ("o" . ??)    ; 'Save' -> MAPPED BELOW
  91.     ;;    ("r" . ??)    ; 'Opts' -> unmapped
  92.     ;;    ("s" . ??)    ; 'Undo' -> MAPPED BELOW
  93.         ("t" . ?x)    ; 'Redo' -> 'do' key
  94.     ;;    ("u" . ??)    ; 'Cmd' -> MAPPED BELOW
  95.     ;;    ("v" . ??)    ; 'Open' -> MAPPED BELOW
  96.     ;;    ("V" . ??)    ; 'Close' -> unmapped
  97.     ;;    ("w" . ??)    ; 'Cancel' -> MAPPED BELOW
  98.         ("x" . ?f)    ; 'Find' -> find/replace
  99.     ;;    ("y" . ??)    ; 'Rplac' -> MAPPED BELOW
  100.     ;;    ("z" . ??)    ; 'Print' -> MAPPED BELOW
  101.     ))
  102.  
  103.      (define-key global-map "\eO" META-O-map)))
  104.  
  105. (defvar META-P-map nil
  106.   "META-P-map maps the META-P function keys on the s4 keyboard.")
  107.  
  108. (if (not META-P-map)
  109.     (progn
  110.  
  111.      (setq META-P-map (lookup-key global-map "\eP"))
  112.      (if (not (keymapp META-P-map))
  113.      (setq META-P-map (make-sparse-keymap)))  ;; <ESC>P commands
  114.      (setup-terminal-keymap META-P-map '(
  115.         ("a" . ?1)    ; Ctrl-1 -> keypad 1
  116.         ("b" . ?2)    ; Ctrl-2 -> keypad 2
  117.         ("c" . ?3)    ; Ctrl-3 -> keypad 3
  118.         ("d" . ?4)    ; Ctrl-4 -> keypad 4
  119.         ("e" . ?5)    ; Ctrl-5 -> keypad 5
  120.         ("f" . ?6)    ; Ctrl-6 -> keypad 6
  121.         ("g" . ?7)    ; Ctrl-7 -> keypad 7
  122.         ("h" . ?8)    ; Ctrl-8 -> keypad 8
  123.         ("i" . ?9)    ; Ctrl-9 -> keypad 9
  124.         ("j" . ?0)    ; Ctrl-0 -> keypad 0
  125.         ("k" . ?-)    ; Ctrl-- -> keypad -
  126.     ))
  127.  
  128.      (define-key global-map "\eP" META-P-map)))
  129.  
  130. ;; Now do terminal-specific mappings of keys with no standard-keycap equivalent
  131.  
  132. ;;;(define-key esc-map "9" 'beginning-of-buffer)        ;'Begin'
  133. ;;;(define-key esc-map "0" 'end-of-buffer)            ;'End'
  134. (define-key META-N-map "I" 'narrow-to-region)        ;'Select'
  135. (define-key META-O-map "k" 'save-buffers-kill-emacs)    ;'Exit'
  136. (define-key META-O-map "o" 'save-buffer)        ;'Save'
  137. (define-key META-O-map "s" 'undo)            ;'Undo'
  138. (define-key META-O-map "u" 'execute-extended-command)    ;'Cmd'
  139. (define-key META-O-map "v" 'find-file)            ;'Open'
  140. (define-key META-O-map "w" 'keyboard-quit)        ;'Cancl'
  141. (define-key META-O-map "y" 'replace-regexp)        ;'Rplac'
  142. (define-key META-O-map "z" 'lpr-buffer)            ;'Print'
  143.